package com.yihusitian.leecode.algorithm.easy;

/**
 * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
 *
 * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 *
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 *
 *
 *
 */
public class PlusOne {

    public int[] plusOne(int[] digits) {
        if (digits == null || digits.length == 0) {
            return digits;
        }
        int digitslen = digits.length;
        if (digits[digitslen - 1] < 9) {
            digits[digitslen - 1] = digits[digitslen - 1] + 1;
            return digits;
        }
        int current = 0;
        int jinwei = 1;
        int[] result = new int[digitslen];
        for (int i = digitslen - 1; i >= 0; i--) {
            int sum = digits[i] + jinwei;
            if (sum == 10) {
                current = 0;
                jinwei = 1;
            } else {
                current = sum;
                jinwei = 0;
            }
            result[i] = current;
        }
        if (jinwei == 1) {
            int[] newresult = new int[digitslen + 1];
            newresult[0] = 1;
            for (int i = 0; i < result.length; i++) {
                newresult[i + 1]= result[i];
            }
            return newresult;
        }
        return result;
    }

    public static void main(String[] args) {
      int[] result =  new PlusOne().plusOne(new int[]{9,9,9});
      for (int i = 0; i < result.length; i++) {
          System.out.print(result[i] + ",");
      }
    }

}
